package main

import (
	"flag"

	"gitee.com/liuxuezhan/ar-platform/login-rpc/internal/config"
	"gitee.com/liuxuezhan/ar-platform/login-rpc/internal/dao/schema"
	"github.com/zeromicro/go-zero/core/conf"
	"gorm.io/driver/mysql"
	"gorm.io/gen"
	"gorm.io/gorm"
)

func main() {
	var c config.Config
	configFile := flag.String("f", "login-rpc/etc/lxz.yaml", "the config file")
	conf.MustLoad(*configFile, &c)

	// Initialize a *gorm.DB instance
	db, err := gorm.Open(mysql.Open(c.DataSource), &gorm.Config{})
	if err != nil {
		panic(err)
	}

	// Initialize the generator with configuration
	g := gen.NewGenerator(gen.Config{
		OutPath:       "login-rpc/internal/dao/model/query", // output directory, default value is ./query
		Mode:          gen.WithDefaultQuery | gen.WithoutContext | gen.WithQueryInterface,
		FieldNullable: true,
	})

	// Use the above `*gorm.DB` instance to initialize the generator,
	// which is required to generate structs from db when using `GenerateModel/GenerateModelAs`
	g.UseDB(db)

	// Generate default DAO interface for those specified structs
	g.ApplyBasic(
		schema.User{},
		schema.AdminLoginToken{},
		schema.AdminUser{},
		schema.UserLoginLogs{},
		schema.UserLoginToken{},
		schema.UserTotal{},
	)

	// Execute the generator
	g.Execute()

	// // 创建数据库表
	d := &schema.User{}
	err = db.Table(schema.SubtableUserId(1, d.TableName())).Set("gorm:table_options", "COMMENT='玩家数据'").AutoMigrate(d)
	if err != nil {
		panic(err)
	}
	d2 := &schema.UserLoginToken{}
	err = db.Table(schema.SubtableUserId(1, d2.TableName())).Set("gorm:table_options", "COMMENT='玩家登陆Token'").AutoMigrate(d2)
	if err != nil {
		panic(err)
	}
	err = db.Set("gorm:table_options", "COMMENT='UserTotal'").AutoMigrate(&schema.UserTotal{})
	if err != nil {
		panic(err)
	}
	err = db.Set("gorm:table_options", "COMMENT='玩家登陆日志'").AutoMigrate(&schema.UserLoginLogs{})
	if err != nil {
		panic(err)
	}
	// //// ---------------------- withdraw -------------------
	// err = db.Set("gorm:table_options", "COMMENT='币类型'").AutoMigrate(&rpc.VirtualDic{})

	// err = db.Set("gorm:table_options", "COMMENT='实名认证表'").AutoMigrate(&rpc.UserAuth{})
	// err = db.Set("gorm:table_options", "COMMENT='提现订单表'").AutoMigrate(&modelWithdraw.WithdrawOrder{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='提现类型表'").AutoMigrate(&modelWithdraw.WithdrawType{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='提现代付通道表'").AutoMigrate(&modelWithdraw.WithdrawChannel{})
	// if err != nil {
	// 	panic(err)
	// }
	// // // ---------------------- config -------------------
	// err = db.Set("gorm:table_options", "COMMENT='银行字典表'").AutoMigrate(&modelConfig.ConfigBank{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='余额变动类型表'").AutoMigrate(&modelConfig.ConfigInoutType{})
	// if err != nil {
	// 	panic(err)
	// }
	// // ---------------------- recharge -------------------
	// err = db.Set("gorm:table_options", "COMMENT='充值通道表'").AutoMigrate(&modelRecharge.RechargeChannel{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='充值订单表'").AutoMigrate(&modelRecharge.RechargeOrder{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='充值类型表'").AutoMigrate(&modelRecharge.RechargeType{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='vip充值配置表'").AutoMigrate(&modelRecharge.RechargeVip{})
	// if err != nil {
	// 	panic(err)
	// }
	// // // ---------------------- tenant channel -------------------
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【bank】'").AutoMigrate(&modelTenantChannel.TenantChannelBank{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【bank_agent】'").AutoMigrate(&modelTenantChannel.TenantChannelBankAgent{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='代付三方银行表【bank_agent_withdraw】'").AutoMigrate(&modelTenantChannel.TenantChannelBankAgent{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【kbzpay】'").AutoMigrate(&modelTenantChannel.TenantChannelKbzpay{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【qr_bank】'").AutoMigrate(&modelTenantChannel.TenantChannelQrBank{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【upi】'").AutoMigrate(&modelTenantChannel.TenantChannelUpi{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【usdt】'").AutoMigrate(&modelTenantChannel.TenantChannelUsdt{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='商户通道表【wavepay】'").AutoMigrate(&modelTenantChannel.TenantChannelWavepay{})
	// if err != nil {
	// 	panic(err)
	// }
	// // // ---------------------- user channel -------------------
	// err = db.Set("gorm:table_options", "COMMENT='用户通道表【bank】'").AutoMigrate(&modelUserChannel.UserChannelBank{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户通道表【ewallet】'").AutoMigrate(&modelUserChannel.UserChannelEwallet{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户通道表【local_ewallet】'").AutoMigrate(&modelUserChannel.UserChannelLocalEwallet{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户通道表【pix】'").AutoMigrate(&modelUserChannel.UserChannelPix{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户通道表【usdt】'").AutoMigrate(&modelUserChannel.UserChannelUsdt{})
	// if err != nil {
	// 	panic(err)
	// }
	// // // ---------------------- user -------------------
	// err = db.Set("gorm:table_options", "COMMENT='用户合伙人奖励表'").AutoMigrate(&modelUser.UserPartnerReward{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户钱包表'").AutoMigrate(&modelUser.UserWallet{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户钱包变更日志表'").AutoMigrate(&modelUser.UserWalletLog{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户洗码表'").AutoMigrate(&modelUserWash.UserWash{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户洗码投注表'").AutoMigrate(&modelUserWash.UserWashBet{})
	// if err != nil {
	// 	panic(err)
	// }
	// err = db.Set("gorm:table_options", "COMMENT='用户洗码描述表'").AutoMigrate(&modelUserWash.UserWashDesc{})
	// if err != nil {
	// 	panic(err)
	// }
}

// AddTag adds a tag to a field of a struct
